package com.kayer.ai.repository;

import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Component
@RequiredArgsConstructor
public class InMemoryChatHistoryRepository implements ChatHistoryRepository{

    //聊天记录历史存储Map集合内存中
    private Map<String,List<String>> chatHistory;

    /**
     * 保存聊天会话Id到会话集合中
     * @param chatId 会话ID
     * @param type 业务类型，如：chat、service、pdf
     */
    @Override
    public void save(String chatId, String type) {
        if(!chatHistory.containsKey(type)){
            //如果没有该类型的聊天记录历史，就默认为空
            chatHistory.put(type,new ArrayList<>());
        }
        //根据类型找到聊天记录
        List<String> chatIds = chatHistory.get(type);
        //因为重复点击聊天会话，他会返回多个相同的会话chatId
        //所以需要判断是否已经存在该chatId，如果存在就不添加了
        if(chatIds.contains(chatId)){
            return;
        }
        //不存在的话
        //将当前聊天记录id添加到该类型的聊天记录集合中
        chatIds.add(chatId);

    }

    /**
     * 根据type来找到会话列表
     * @param type 业务类型，如：chat、service、pdf
     * @return
     */
    @Override
    // 重写getChatIds方法，根据type参数获取聊天记录的id列表
    public List<String> getChatIds(String type) {
        // 从chatHistory中获取type对应的聊天记录id列表
        List<String> chatIds = chatHistory.get(type);
        // 如果chatIds为空，则返回一个空的列表
        return chatIds == null ? List.of() : chatIds;
    }
}
